1. Field of the Invention
Embodiments of the present disclosure are directed to application performance management.
2. Description of the Related Art
Maintaining and improving application performance is an integral part of success for many of today's institutions. Businesses and other entities progressively rely on increased numbers of software applications for day to day operations. Consider a business having a presence on the World Wide Web. Typically, such a business will provide one or more web sites that run one or more web-based applications. A disadvantage of conducting business via the Internet in this manner is the reliance on software and hardware infrastructures for handling business transactions. If a web site goes down, becomes unresponsive or otherwise fails to properly serve customers, the business may lose potential sales and/or customers. Intranets and Extranets pose similar concerns for these businesses. Thus, there exists a need to monitor web-based, and other applications, to ensure they are performing properly or according to expectation.
For many application developers, a particular area of concern in these types of environments is transaction time. Longer transaction times may correlate directly to fewer transactions and thus, lost sales, etc. It may be expected that a particular task that forms part of a type of transaction may take a fraction of a second to complete its function(s). The task may execute for longer than expected for one or more transactions due to a problem somewhere in the system. Slowly executing tasks can degrade a site's performance, degrade application performance, and consequently, cause failure of the site or application.
Accordingly, developers seek to debug software when an application or transaction is performing poorly to determine what part of the code is causing the performance problem. While it may be relatively easy to detect when an application is performing slowly because of slow response times or longer transaction times, it is often difficult to diagnose which portion of the software is responsible for the degraded performance. Typically, developers must manually diagnose portions of the code based on manual observations. Even if a developer successfully determines which method, function, routine, process, etc. is executing when an issue occurs, it is often difficult to determine whether the problem lies with the identified method, etc., or whether the problem lies with another method, function, routine, process, etc. that is called by the identified method. Furthermore, it is often not apparent what is a typical or appropriate execution time for a portion of an application or transaction. Thus, even with information regarding the time associated with a piece of code, the developer may not be able to determine whether the execution time is indicative of a performance problem or not.